package com.guiwu.caiguanlin.leetcode;

/**
 * 删除元素
 */
public class Test23 {

    public static void main(String[] args) {
        int[] nums = {3, 2, 2, 3};
        int count = removeElement(nums, 3);
//        System.out.println(count);
    }

    /**
     * 双指针解法、快慢指针
     *
     * @param nums
     * @param val
     * @return
     */
    public static int removeElement(int[] nums, int val) {
        int slowIndex = 0;
        for (int fastIndex = 0; fastIndex < nums.length; fastIndex++) {
            if (val != nums[fastIndex]) {
                nums[slowIndex] = nums[fastIndex];
                slowIndex++;
            }
        }
        return slowIndex;
    }
//    public static int removeElement(int[] nums, int val) {
//        int index = 0;
//        for (int num : nums) {
//            if (num != val) {
//                nums[index++] = num;
//            }
//        }
//
//        for (int num : nums) {
//            System.out.println(num);
//        }
//        return index;
//    }

    /**
     * Stream流
     * @param nums
     * @param val
     * @return
     */
//    public static int removeElement(int[] nums, int val) {
//        if (nums == null || nums.length == 0){
//            return 0;
//        }
//        nums = Arrays.stream(nums).filter(item -> item != val).toArray();
//        return nums.length;
//    }
}
